# Требования к выполнению домашнего задания

Ниже представлены требования к ДЗ по переносу кода из других языков программирования
(Matlab, Wolfram Mathematica, MathCad, ...) в Python.

## Выбор ДЗ

- ДЗ должно быть согласовано с преподавателем и оформлено в виде issue в Gitlab
- Перед выполнением ДЗ нужно изменить поле assign и указать в этом поле одного из
  участников команды, чтобы другие студенты видели, что эта задача уже занята

## Соблюдение общих требований к коду

Общие требования к коду представлены в файле [contributing.md](../contributing.md)

## Работа с репозиторием

- Все участники команды, работающие над одним ДЗ, должны работать в одном репозитории:
  либо все в Gitlab, либо все в Gitflic. Если кто-то начал работу в Gitlab и требуется
  перейти на Gitflic с минимальными усилиями, то можно посмотреть эту
  [инструкцию](../docs/gitflic_gitlab_mirror.md).
- Команда создаёт ветку (из ветки main) для своего ДЗ. В названии ветки должен быть
  указан номер взятого issue после символа #. Например, stroymech_ring_#14 или tau_2sem_#15
- После переключения в новую ветку необходимо создать папку для ДЗ вашей команды в папке
  [dz](.).
- После того, как ДЗ будет готово, необходимо сделать merge-request Вашей ветки в ветку
  main. Перед выполнением merge-request убедитесь, что gitlab не выдаёт ошибок в
  последнем коммите вашей
  [ветки](https://gitlab.com/Zaynulla/python_for_bmstu_students/-/pipelines?scope=branches&page=1).

## Требования к содержимому ДЗ

- На графиках должны быть подписаны оси, единицы измерения
- Картинки и прочие мусорные файлы в репозиторий не отправлять. Для этого в своей папке
  можно создать файл .gitignore, например, следующего содержания:

  ```gitignore
  *.png
  *.jpg
  *.ipynb
  ```

- Помимо расчёта должен быть автоматизирован документ в формате \*.docx с оформленным
  ДЗ. См. пример в файле [docx_template.py](../lessons/lesson_01/docx_template.py).
- В репозиторий необходимо поместить только шаблон документа \*.docx, а сгенерированный
  документ в репозитории сохранять не нужно, см. пример файла
  [.gitignore](../lessons/lesson_01/.gitignore)
- Все исходные численные параметры расчёта и итоговые графики должны быть заполняться в
  итоговом документе автоматически, т.е. должны быть представлены в виде переменных в
  шаблоне \*.docx. Необходимо для того, чтобы при изменении в скрипте исходных
  параметров расчёта эти параметры и измененные графики автоматически обновлялись в
  документе *.docx.
- В скрипте необходимо использовать специальные комментарии, обозначающие [jupyter code
  cells](https://code.visualstudio.com/docs/python/jupyter-support-py#_jupyter-code-cells).
- Файлы \*.ipynb (jupyter notebook) в репозиторий отправлять не нужно, только обычные
  скрипты python (.py)
- Если файлов \*.py несколько, то должен быть файл main.py, который необходимо запустить
  для получения итогового результата: должен выполниться расчёт и сформироваться \*.docx
  файл. Не должно требоваться ручного запуска нескольких python-файлов.

## Требования к командной работе

- Команда от 2 до 5 студентов. Более точные ограничения размера команды указаны в
  описании задач.
- Вклад каждого студента должен быть значим. Например, разделение ролей может быть
  следующим (не обязательно именно так):
  - расчёт (может выполняться несколькими студентами если расчёт большой)
  - графики
  - автоматизация формул, если в формулах меняются числа
  - автоматизация отчёта word
- Должен быть как минимум один *.py файл, с коммитами от двух разных студентов.
